package com.chf.items;

import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.ClickEvent;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.HoverEvent;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;

/**
 * 自定义第一件物品配置信息
 *
 * @author niooooo
 */
public class FirstItem extends Item {

    public FirstItem(Properties properties) {
        super(properties);
    }

    /**
     * 添加物品的提示信息
     *
     * @param stack      {@link ItemStack} 背包物品栏
     * @param level      {@link Level} 世界
     * @param components {@link List}<{@link Component}> 文本组件
     * @param flag       {@link TooltipFlag}
     */
    @Override
    public void appendHoverText(@NotNull ItemStack stack,
                                @Nullable Level level,
                                @NotNull List<Component> components,
                                @NotNull TooltipFlag flag) {
        // 第一行提示（带超链接）
        try {
            URI uri = new URI("https://docs.minecraftforge.net/");
            components.add(Component.literal("点击查看教程")
                    .withStyle(style -> style
                            .withColor(ChatFormatting.BLUE)
                            .withUnderlined(true)
                            .withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, uri.toString()))
                    ));
        } catch (URISyntaxException e) {
            components.add(Component.literal("无效的URL").withStyle(ChatFormatting.RED));
        }

        // 第二行提示（普通文本）
        components.add(Component.literal("★ 传奇物品 ★").withStyle(ChatFormatting.GOLD));

        // 第三行提示（灰色描述）
        components.add(Component.literal("右键使用神秘力量").withStyle(ChatFormatting.GRAY));

        // 第四行提示（带悬停文本）
        components.add(Component.literal("[悬停查看详情]")
                .withStyle(style -> style
                        .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, Component.literal("这里是详细说明文本")))
                ));

        // 第五行提示（高级信息）
        if (flag.isAdvanced()) {
            components.add(Component.literal("物品ID: firstmod:ikun").withStyle(ChatFormatting.DARK_GRAY));
        }
    }

}